﻿Imports Lourdes.BackEnd.BC
Imports Lourdes.BackEnd.Modelo
Imports Lourdes.BackEnd

Public Class entregaPage
  Inherits System.Web.UI.Page
  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    ConfigurarPagina()
  End Sub
  Private Sub ConfigurarPagina()
    Dim intEntId As Integer
    Dim strQuerStr As String = Request.QueryString("EntregaId")
    Dim bcEnt As New BC_Entrega
    Dim lstEnt As New List(Of Entrega)
    Dim objEnt As Entrega
    If IsNumeric(strQuerStr) Then
      intEntId = CInt(strQuerStr)
      lstEnt = bcEnt.GetByPK(intEntId)
      If lstEnt.Count = 0 Then
        MostrarMensaje("El número de entrega es incorrecto o inexistente.")
      Else
        objEnt = lstEnt.FirstOrDefault
        MostrarEntrega(objEnt)
      End If
    Else
      MostrarMensaje("El número de entrega es incorrecto o inexistente.")
    End If
  End Sub

  Private Sub MostrarEntrega(pEnt As Entrega)
    Dim eEst As Enums.EntregaEstados = pEnt.Estado()
    With pEnt


      Select Case eEst
        Case Enums.EntregaEstados.Cancelado
          MostrarMensaje("Entrega cancelada.")
          Return
        Case Enums.EntregaEstados.Entregado
          ltrPenTitulo.Text = "Entrega nº " & .EntregaId & " ya realizada."
          ltrPenSubTit.Text = "Fecha y hora de entrega " & .FechaHoraEntregaPactada.ToString("dd/MM/yyyy") & " a las " & _
                              .FechaHoraEntregaPactada.ToString("HH:mm") & "."
        Case Enums.EntregaEstados.Enviado
          ltrPenTitulo.Text = "Entrega nº " & .EntregaId & " se encuentra en camino."
          ltrPenSubTit.Text = "Fecha y hora de entrega aproximada " & .FechaHoraEntregaPactada.ToString("dd/MM/yyyy") & " a las " & _
                              .FechaHoraEntregaPactada.ToString("HH:mm") & "."
        Case Enums.EntregaEstados.Pendiente
          ltrPenTitulo.Text = "Entrega nº " & .EntregaId & " en estado Pendiente de envío."
          ltrPenSubTit.Text = "Pactada a realizarse el " & .FechaHoraEntregaPactada.ToString("dd/MM/yyyy") & " a las " & _
                              .FechaHoraEntregaPactada.ToString("HH:mm") & " (puede cambiar)."

      End Select
      ConfigurarEntrega(pEnt)
    End With
  End Sub

  Private Sub ConfigurarEntrega(pEnt As Entrega)
    'ltrPenFecha.Text = oEnt.FechaHoraEntregaPactada.ToString("dd/MM/yyyy")
    'ltrPenHora.Text = oEnt.FechaHoraEntregaPactada.ToString("HH:mm")
    With pEnt
      ltrPenDest.Text = DestinatarioGenerar(pEnt)
      ltrPenLugEnt.Text = LugarEntregaGenerar(pEnt)
      imgPenMapa.ImageUrl = MapaGenerarSrc(pEnt)
      ltrPenCadete.Text = CadeteGenerar(pEnt)
      ltrPenPedido.Text = PedidoGenerar(pEnt)

    End With
    mvContents.SetActiveView(vEntrega)
  End Sub

  Private Function PedidoGenerar(pEnt As Entrega) As String
    Dim oTxt As New StringBuilder
    Dim bcFactDet As New BC_FacturaDetalle
    Dim lstFactDet As List(Of FacturaDetalle)
    lstFactDet = bcFactDet.getByCabecera(pEnt.FacturaId)

    With oTxt
      .Append("<div data-role=""fieldcontain"">")
      .Append("<label><strong>Cantidad - Mercadería</strong></label>")
      .Append("</div>")

      For Each unDet In lstFactDet
        .Append("<div data-role=""fieldcontain"">")
        .Append("<label>" & unDet.Cantidad & " - " & unDet.Mercaderia.NombreLargo & "</label>")
        .Append("</div>")
      Next
    End With

    Return oTxt.ToString
  End Function

  Private Function CadeteGenerar(pEnt As Entrega) As String
    Dim oTxt As New StringBuilder

    With oTxt

      'No hay cadete asignado
      If Not pEnt.CadetePerId.HasValue Then
        .Append("<h4>No hay ningún cadete asignado a su pedido.</h4>")

        'si hay cadete asignado.
      Else
        Dim entPer As Persona
        Dim bcPer As New BC_Persona
        entPer = bcPer.GetByPK(pEnt.CadetePerId.Value).FirstOrDefault


        .Append("<fieldset class=""ui-grid-a"">")
        .Append("  <div class=""ui-block-a"">")
        .Append("    <img src=""../img.aspx?id=" & pEnt.CadetePerId.Value.ToString & """ alt=""Cadete asignado"" />")
        .Append("  </div>")
        .Append("  <div class=""ui-block-b"">")

        .Append("    <div data-role=""fieldcontain"">")
        .Append("      <label>")
        .Append("        " & entPer.Nombre & " " & entPer.Apellido & "</label>")
        .Append("    </div>")

        .Append("    <div data-role=""fieldcontain"">")
        .Append("      <label>")
        .Append("        DNI " & FormatNumber(entPer.NumeroDoc, 0, TriState.False, TriState.False, TriState.True) & "</label>")
        .Append("    </div>")

        .Append("    <div data-role=""fieldcontain"">")
        .Append("      <label>")
        .Append("        Por su seguridad verifique que los datos y la fotografía se correspondan con la persona que entrega el pedido. </label>")
        .Append("    </div>")

        .Append("  </div>")
        .Append("</fieldset>")
      End If

      Return .ToString
    End With

  End Function

  Private Function MapaGenerarSrc(pEnt As Entrega) As String
    Dim lat As String = pEnt.DestLat.ToString.Replace(",", ".")
    Dim lon As String = pEnt.DestLong.ToString.Replace(",", ".")
    Return "http://maps.google.com/maps/api/staticmap?zoom=16&size=200x200&markers=color:blue|label:D|" & lat & "," & lon & "&sensor=false"
  End Function
  Private Function LugarEntregaGenerar(pEnt As Entrega) As String
    Dim oTxt As New StringBuilder

    With oTxt
      .Append("<div data-role=""fieldcontain"">")
      .Append("<label>Calle: " & pEnt.DestCalle & " " & pEnt.DestNumero & "</label>")
      .Append("</div>")

      .Append("<div data-role=""fieldcontain"">")
      .Append("<label>Piso: " & pEnt.DestPiso & "  " & pEnt.DestDepto & "</label>")
      .Append("</div>")

      .Append("<div data-role=""fieldcontain"">")
      .Append("<label>Barrio: " & pEnt.DestBarrio & "</label>")
      .Append("</div>")

      .Append("<div data-role=""fieldcontain"">")
      .Append("<label>CP: " & pEnt.DestCodigoPostal & "</label>")
      .Append("</div>")

      .Append("<div data-role=""fieldcontain"">")
      .Append("<label>Ciudad: " & pEnt.DestCiudad & "</label>")
      .Append("</div>")


      .Append("<div data-role=""fieldcontain"">")
      .Append("<label>Provincia: " & pEnt.DestProvincia & "</label>")
      .Append("</div>")

      .Append("<div data-role=""fieldcontain"">")
      .Append("<label>País: " & pEnt.DestPais & "</label>")
      .Append("</div>")
    End With

    Return oTxt.ToString
  End Function

  Private Function DestinatarioGenerar(pEnt As Entrega) As String
    Dim oTxt As New StringBuilder

    With oTxt
      .Append("<div data-role=""fieldcontain"">")
      .Append("<label>Nombre: " & pEnt.DestNombre & " " & pEnt.DestApellido & "</label>")
      .Append("</div>")

      .Append("<div data-role=""fieldcontain"">")
      .Append("<label>" & pEnt.DestTipoDoc & ": " & FormatNumber(pEnt.DestNumeroDoc, 0, TriState.False, TriState.False, TriState.True) & "</label>")
      .Append("</div>")

      .Append("<div data-role=""fieldcontain"">")
      .Append("<label>Teléfono: " & pEnt.DestTelefono & " " & pEnt.DestTelefonoCel & "</label>")
      .Append("</div>")

      .Append("<div data-role=""fieldcontain"">")
      .Append("<label>Email: " & pEnt.DestEmail & "</label>")
      .Append("</div>")

    End With

    Return oTxt.ToString
  End Function


  Private Sub MostrarMensaje(pMensaje As String)
    ltrMensaje.Text = pMensaje
    mvContents.SetActiveView(vEntMsj)
  End Sub

End Class